A Collection of CPM and MSDOS based 8080/Z80/8086 Assemblers and Linkers.
Over the years I utilized a number of assemblers and linkers. Each had its own
advantage and quirks. Here is a collection of some of the better ones I
have collected in one spot for easy downloads. In no particular order....
TDL's Z80 Macro Assembler.
This was perhaps the first Z80 assembler utilized by the S-100
community. It utilized Intel 8080 style opcodes and had its own unique opcodes
for Z80 specific instructions. It had relocating code capability and a fairly
decent collection of macros. It actually came out before CPM and operated
initially with TDL's own disk system. I think there may in fact been early
cassette tape versions. Later of course there was a proper CPM version.
Quite a bit of early S-100/CPM software was written for this assembler. It
had its own Linker as well.
The manual for the TDL ZASM Assembler can be obtained
here.
The actual programs can be obtained
here.
Cromemco ZASMB.COM Z80 Assembler.
Again a very early Z80 assembler. This one had more limited macro capability but
it was very fast. It utilized Zilog opcodes. The one annoying issue
with this assembler is that it will not accept names with
the "$" or "_" character. The run time command line synthex is also a little
strange. For example:-
ASMB USERFILE.ABX
will assemble the source file on A: create an object file on drive B: and send
the print listing to the printer. The assembler always produces .REL files
which must then be linked with their Cromemco Loader to produce a .COM file.
The Digital Research LINK or Microsoft Link-80 program (see below) are better
and can be used instead to produce .COM or .HEX files.
The manual for the Cromemco ZASMB Assembler can be obtained
here.
The actual ZASMB.COM programs can be obtained
here.
Digital Research's ASM, MAC, RMAC and LINK
Probably more CPM code has been written with this combination than any other.
Digital Research never really did adapted to the Z80 with its extra opcodes. All
their code was in Intel 8080 style format. They did provide a kludge Z80.LIB
for cases where you could take advantage of the Z80's capability. However it was
just that a kludge. It can be very frustrating looking up the Digital Research
opcode of the equivalent Zilog one. The Zilog mnemonics to me always
seemed more logical. That said, almost all BIOS code is written with
these assemblers and linker. You have no choice! The MAC assembler
was an improvement of the earlier Digital ASM.COM. Same format etc. it just had
macros capability. The more powerful RMAC also allowed the generation or
reloadable code modules. The CPM program HEXCOM is useful for quickly converting
a .HEX file to a .COM file.
MAC filename
produces filename.hex, filename.prn and filename.sym The latter can be
utilized as a symbol table for the Digital Research Symbolic Debugger SID.
The manual for the Digital Research ASM.COM can be obtained
here.
The manual for the Digital Research MAC.COM can be obtained
here.
The manual for the Digital Research LINK(80).COM can be obtained
here.
The actual ASM,MAC, RMAC, LINK, Z80.LIB and HEXCOM programs can be obtained
here and
here.
SD Systems ASM and LINK
In the past I used the SD Systems assembler simply
because that's what I started with. It has a slight quirk in that the data
fields "DB", "DW" require "DEFB" and "DEFW". The good news is that strings can
be written with "DEFM". It is a fast stripped down assembler but today
nothing special.
The SD Systems assembler (ZASM.COM) can be obtained
here
The command line assembler options can be
obtained
here
The SD Systems Linker (LINK.COM) can be obtained here
The command line linker options can be obtained
here
Microsoft's M80 and L80
Again a very popular CPM assembler. Very useful if you want to splice things
into other higher languages. However I never really liked it but add it here for
completeness.
The manual for Microsoft's M80.COM can be obtained
here.
The manual for Microsoft's L80.COM can be obtained
here.
The actual M80 and L80 programs can be obtained
here.
P.F. Ridler's ZASMB
This is a really great little Z80 assembler written in 1985 by
a P.F.Ridler, from of all places Zimbabwe.
He called it ZASMB.COM. What's nice about it is it is very fast and spits code
out directly as a .COM file. It uses Zilog syntax but will allow you to also use
terms that are consistent -- like XOR A,A or CP A,05H instead or XOR A and CP
05H. The
only limitation, a rather limited number of ifdef's options. Best of all you can assemble
the assembler source code yourself if you are so inclined.
The manual for
ZASMB can be seen here.
The source code for ZASMB can be obtained
here
The ZASMB.COM can be obtained here
SLR's Z80ASM
While late to the CPM scene this assembler is in my opinion by far the
best. Its lightening fast, produces .COM or .HEX files
directly, it is very efficient and has many options. I have now switched
over to this assembler for all my own Z80 code.
The SLR Z80ASM.com assembler can be obtained
here.
The documentation
can be obtained here.
Digital Research's DDT, SID and ZSID
These go hand in hand with the above assemblers. For CPM there was really no
other debugger other than those of Digital research. To this day they are model
examples of code debuggers.
The manual for the Digital Research DDT.COM can be obtained
here.
The manual for the Digital Research SID.COM can be obtained
here.
The manual for the Digital Research ZSID.COM can be obtained
here.
The actual DDT, SID and ZSID programs can be obtained
here.
Digital Research CPM86 Assemblers, Linker and Debugger
These are modeled almost exactly after the CPM80 versions. One nice
feature was ASM86.COM which is a CPM80 version of the 8086 ASM86.CMD assembler.
This allows your to work with your BIOS (and other programs) under CPM80 as you
are building up a CPM86 version. Digital Research also supplied a CPM80
XLT-86.COM program that did a decent first pass job of converting your 8080 into
8086 code.
The CPM-86 Programmers Guide & Systems Guide explains how to work with these
programs.
They can be obtained
here and
here.
The manual for the Digital Research XLT-86.COM can be obtained
here.
The actual SID.CMD, RASM86.CMD, LINK86.CMD, ASM86.COM and XLT-86.COM programs can be obtained
here.
The NASM MSDOS/Windows Assembler.
This is an alternative to the well known MASM MSDOS 8086 assembler. In my
opinion it is a far superior assembler. The syntax is very simple (all memory
data addressing is in "[ ]" brackets, any references to labels etc are just
entered as text). So code like:-
MOV AL,[ES:BX], MOV AX,[ES:BX] , MOV
AX, [BX] and MOV AX,label are all quite clear.
NASM outputs files in a number of formats including .BIN, .HEX, .COM, .OBJ.
It will also handle opcoded for all the more recent 8086 "family" of chips,
Pentium etc. It is very fast too. Currently it is the only assembler
I use for 8086 code. There is an active public web site that supports this
assembler, see http://www.nasm.us/.
The NASM assembler manual can be obtained
here.
The NASM assembler can be obtained here.
(Normally you only use NASM.EXE)
This page was last modified
on
09/18/2011